#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QThread>
#include <QDebug>

// 自定义head
#include "settings/configmanager.h"
#include "dictionary/dicthandler.h"
#include "inputmethod/inputcontext.h"
#include "eventfilter.h"
#include "skinmanager.h"

// 平台适配头文件（条件编译）
#ifdef Q_OS_WIN
#include "windows/winimehandler.h"
#else if Q_OS_LINUX
#include "linux/ibusadapter.h"
#endif

int main(int argc, char *argv[]) {
	// init
	QApplication a(argc, argv);
	a.setAttribute(Qt::AA_EnableHighDpiScaling, true);
	a.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
	a.setApplicationName("scSmartInput");
	a.setApplicationVersion("v1.0.0");

	// 初始化输入核心
    InputContext* inputCtx = new InputContext(&a);
    
    // 条件编译：初始化平台适配器（Windows IME）
#ifdef Q_OS_WIN
    WinIMEHandler* imeHandler = new WinIMEHandler(inputCtx, &a);
    // 注册IME（需管理员权限运行，测试时可注释，正式部署时启用）
    // QString imePath = QCoreApplication::applicationFilePath();
    // imeHandler->registerIME("scSmartInput", imePath);
    // 设置当前激活窗口（初始为桌面，后续可通过EventFilter更新）
    HWND desktopHwnd = GetDesktopWindow();
    imeHandler->setActiveWindow(desktopHwnd);
#endif

    return a.exec();
}